package models;

import play.db.ebean.Model;

import javax.persistence.*;
import java.util.*;

@Entity
public class Panier extends Model{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Id
	public Long id;	
	public List<ProdPanier> prodPanier;
		
	/** Ajoute la quantité quantite de produit sélectionné
	 * 
	 * @param f Fiche du produit à ajouter
	 * @param quantite Quantité de produit à ajouter
	 */
	public void selectionerProduit(Fiche f, int quantite) {
		String nomProduitPanier = f.label;
		for(int i = 0; i < quantite; i++){
			prodPanier.add(new ProdPanier(nomProduitPanier));
		}
	}
	
	/** Retire le produit p du panier
	 * 
	 * @param p Produit à retirer
	 */
	public void deselectionnerProduit(String nomProd) {
		int index=trouverProduit(nomProd);
		if(index!=-1)
			prodPanier.remove(index);
	}

	// 
	/** Recherche le produit dans la liste des produit du panier
	 * 
	 * @param p Produit recherché
	 * @return index du produit dans la liste des produits du panier
	 */
	private int trouverProduit(String label) {
		return prodPanier.indexOf(label);
	}

	/** Supprime le panier
	 */
	public void supprimerPanier() {
		prodPanier.clear();
	}

	/** Supprime l'Option nomOpt du Produit nomP
	 * 
	 * @param p Produit auquel supprimer une Option
	 * @param opt Option à supprimer
	 */
	public void supprimerOption(String nomP, String nomOpt) {
		int index = trouverProduit(nomP);
		if(index != -1)
			prodPanier.get(index).removeOptionPanier(nomOpt);
	}

	/** Ajoute l'Option nomOpt au Produit nomP
	 * 
	 * @param nomP Label du auquel ajouter une Option 
	 * @param nomOpt  
	 */
	public void ajouterOption(String nomP, String nomOpt) {
		int index = trouverProduit(nomP);
		if(index != -1)
			prodPanier.get(index).addOptionPanier(nomOpt);
	}
	
	/** 
	 * 
	 * @param panier Panier à modifier
	 */
	public void modifierPanier(Panier panier) {
		// TODO Auto-generated method stub
		
		
	}

	/** 
	 * 
	 */
	public void voirPanier() {
		// TODO Auto-generated method stub
		
	}

	/** Valide le panier
	 * 
	 * @param panier Panier à valider
	 * @return Panier validé
	 */
	public Boolean valider(Panier panier) {
		// TODO Auto-generated method stub		
		return null;
	}
		
	
	private class ProdPanier{
		
		public String nomProduit;
		public List<String> optionProd;
		
		// Constructeur de la classe ProdPanier
		public ProdPanier(String nom){
			nomProduit = nom;
			
			optionProd = new ArrayList<String>();
		}
		
		/** Ajoute une option au produit
		 * 
		 * @param optionPan Option à ajouter au produit
		 */
		public void addOptionPanier(String nomOption){
			optionProd.add(nomOption);
		}
		
		/** Supprime une option du produit
		 * 
		 * @param optionPan Option à retirer du produit
		 */
		public void removeOptionPanier(String optionPan){
			optionProd.remove(optionPan);
		}
	}
}
